Many users now regard their smartphones as portable computing devices for handling a host of general-purpose tasks, rather than mobile telephones for only making and receiving calls. This development enriches users, but also raises complications. For example, personal computing devices (such as, but not limited to, smartphones) operate in a technical realm of ever-changing applications, services, peripheral devices, operating systems, standards, and so on. A personal computing device may attempt to keep pace with these changes by frequently updating its software. But such an update strategy can overtax the limited resources of the personal computing device, leading to poor device performance and poor user experience. Further, in some cases, the update process can cause errors and other undesired effects, as when a software update contains malicious content.